Method for accelerating cryptographic operations on elliptic curves

ABSTRACT

This invention provides a method for accelerating multiplication of an elliptic curve point Q(x,y) by a scalar k, the method comprising the steps of selecting an elliptic curve over a finite field Fq where q is a prime power such that there exists an endomorphism ψ, where ψ(Q)=λ·Q for all points Q(x,y) on the elliptic curve; and using smaller representations k i  of the scalar k in combination with the mapping y to compute the scalar multiple of the elliptic curve point Q.

This application is a continuation-in-part of U.S. patent applicationSer. No. 09/885,959, filed on Jun. 22, 2001, which is a continuation ofInternational Application No.

PCT/CA99/01222, filed on Dec. 23, 1999, and claims the priority ofCanadian Patent Application No. 2,257,008, filed on Dec. 24, 1998, thecontent of all of which is incorporated herein by reference.

This invention relates to a method for performing computations incryptographic systems utilizing elliptic curves.

BACKGROUND OF THE INVENTION

A public-key data communication system may be used to transferinformation between a pair of correspondents. At least part of theinformation exchanged is enciphered by a predetermined mathematicaloperation by the sender and the recipient may perform a complementarymathematical operation to decipher the information.

Each correspondent has a private key and a public key that ismathematically related to the private key. The relationship is such thatit is not feasible to determine the private key from knowledge of thepublic key. The keys are used in the transfer of data, either to encryptdata that is to be transferred or to attach a signature to allowverification of the authenticity of the data.

For encryption, one correspondent uses the public key of the recipientto encrypt the message and sends it to the recipient. The recipient thenuses her private key to decipher the message.

A common key may also be generated by combining one parties public keywith the other parties private key. It is usual in such cases togenerate new private and corresponding public keys for eachcommunication session, usually referred to as session keys or ephemeralkeys, to avoid the long-term keys of the parties being compromised.

The exchange of messages and veneration of the public keys may thereforeinvolve significant computation involving exponentiation when thecryptographic system utilizes in Z*p, the finite field of integers mod pwhere p is a prime or the analogous operation of point multiplicationwhen the system utilizes an elliptic curve. In an elliptic curve system,an ephemeral key pair is obtained by generating a secret integer, k andperforming a point multiplication in the seed point Q to provide theephemeral public key kQ. Similarly, the generation of a common ephemeralsession key will require multiplication of a public key k_(a)Q, which isa point on the curve, with a secret integer k_(b) of the othercorrespondent so that point multiplication is again required.

A similar procedure is used to sign a message except that the senderapplies his private key to the message. This permits any recipient torecover and verify the message using the senders public key.

Various protocols exist for implementing such a scheme and some havebeen widely used. In each case, however, the sender is required toperform a computation to sign the information to be transferred and thereceiver is required to perform a computation to verify the signedinformation.

In a typical implementation a signature component s has the form:s=ae+k (mod n)where; in an elliptic curve crypto system,

P is a point on the underlying curve which is a predefined parameter ofthe system;

k is a random integer selected as a short term private or session key;

R=kP is the corresponding short term public key;

a is the long term private key of the sender;

Q=aP is the senders corresponding public key;

e is a secure hash, such as the SHA-1 hash function, of a message m andthe short term public key R; and

n is the order of the curve.

The sender sends to the recipient a message including m, s, and R andthe signature is verified by computing the value R¹=(sP−eQ) which shouldcorrespond to R. If the computed values correspond then the signature isverified.

In order to perform the verification it is necessary to compute thepoint multiplications to obtain sP and eQ, each of which iscomputationally complex. Where the recipient has adequate computing,power this does not present a particular problem but where the recipienthas limited computing power, such as in a secure token or a “Smart card”application, the computations may introduce delays in the verificationprocess.

Key generation and signature protocols may therefore be computationallyintensive. As cryptography becomes more widely used there is anincreasing demand to implement cryptographic systems that are faster andthat use limited computing power, such as may be found on a smart cardor wireless device.

Elliptic curve cryptography (ECC) provides a solution to the computationissue. ECC permits reductions in key and certificate size thattranslates to smaller memory requirements, and significant cost savings.ECC can not only significantly reduce the cost, but also accelerate thedeployment of smart cards in next-generation applications. Additionally,although the ECC algorithm allows for a reduction in key size, the samelevel of security as other algorithms with larger keys is maintained.

However, there is still a need to perform faster calculations on thekeys so as to speed up the information transfer while maintaining a lowcost of production of cryptographic devices.

Computing multiples of a point on an elliptic curve is one of the mostfrequent computations performed in elliptic curve cryptography. Onemethod of speeding up such computations is to use tables of precomputedmultiples of a point. This technique is more useful when a point isknown beforehand. However, there are cases when multiples of previouslyunknown points are required (for example, in ECDSA verification). Thusthere is a need for a system and method for facilitating pointmultiplications.

SUMMARY OF THE INVENTION

In general terms, the present invention represents the scalar k as acombination of components k_(i) and an integer λ derived from anendomonphisim in the underlying curve.

The method is based on the observation that, given an elliptic curve(EC) having complex multiplication mapping over a finite field, there isan λ, which is the solution to a quadratic, for which the complexmultiplication mapping is equivalent to multiplying a point Q by λ. Itwill often be less computationally expensive to compute λQ via thecomplex multiplication map, compared to treating λ as a integer andperforming the EC multiplication. In practice, point multiplication byother scalars (not just λ) is required. It is also shown how themultiplication mapping may be used to compute other multiples of thepoint.

In accordance with this invention there is provided a method foraccelerating multiplication of an elliptic curve point Q(x,y) by ascalar k, the method comprising the steps of: selecting an ellipticcurve over a finite field F such that there exists an endomorphism ψ,where ψ(Q)=λ·Q for all points Q(x,y) on the elliptic curve; and usingsmaller representation k_(i) of the scalar k in combination with themapping v to compute the scalar multiple of the elliptic curve point Q.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other features of the preferred embodiments of the inventionwill become more apparent in the following detailed description in whichreference is made to the appended drawings wherein:

FIG. 1 is a schematic diagram of a communication system;

FIG. 2 is a flow chart showing the steps of implementing a firstembodiment of the present invention.

FIG. 3 is a flow chart showing the steps of providing parametersrequired to implement the method of FIG. 2.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

For convenience in the following description, like numerals refer tolike structures in the drawings. Referring to FIG. 1, a datacommunication system 10 includes a pair of correspondents, designated asa sender 12, and a recipient 14, connected by a communication channel16. Each of the correspondents 12, 14 includes a cryptographic processor18, 20 respectively that may process digital information and prepare itfor transmission through the channel 16 as will be described below. Eachof the correspondents 12, 14 also includes a computational unit 19, 21respectively to perform mathematical computations related to thecryptographic processors 18, 20. The processors 18, 20 may be embodiedin an integrated circuit incorporated in the processor or may beimplemented as instructions encoded on a data carrier to implement apredetermined protocol in conjunction with a general purpose processor.For the purpose of illustration it will be assumed that thecorrespondent 12 is in the form of a smart card having a dedicatedprocessor 18 with relatively limited computing power. The processor 20may be a central server communicating with the card by channel 16 andchannel 16 may be a wireless communication channel if preferred.

The cryptographic processors 18 implement an elliptic curvecryptographic system, of ECC, and one of the functions of thecryptographic processor 18 is to perform point multiplications of theform k·Q, where k is an integer and Q a point on the underlying ellipticcurve, so that they may be used as a key pair k, kQ in a cryptographicscheme. As noted above, cryptographic computations such as themultiplication of an elliptic curve point by a scalar value arecomputationally expensive.

A method for accelerating scalar multiplication of an elliptic curvepoint Q(x,y) is shown in FIG. 2 and indicated generally by the numeral50. The subject algorithm increases the speed at which the processors 12can for example sign and verify messages for specific classes ofelliptic curves. The method is based on the observation that given thegeneral equation for an elliptic curve E:y ² +a ₁ xy+a ₃ y=x ³ +a ₂ x ² +a ₄ x+a ₆   (1)over a finite field, exemplified as F_(q) (q is a prime power) and whenthere exists an endomorphism ψ, where ψ(Q)=λ·Q for all points Q(x,y) onthe elliptic curve, then multiplication of the point Q by an integer kmay be accelerated by utilizing combinations of smaller representationsk_(i) of k in combination with the mapping ψ. The mapping ψ also allowsprecomputation of group elements and combinations thereof, which may beused in subsequent calculation of kQ.

Referring now to FIG. 2, a flow chart of a general embodiment foraccelerating point multiplication on an elliptic curve, is shown bynumeral 50. The system parameters are first selected. As an initial stepan underlying elliptic curve E is selected to have certaincharacteristics. In a first embodiment of the invention the generalizedelliptic curve (1) may be expressed in the following form:E: y ² =x ³ +b mod p; where p is a prime.   (2)

Firstly, the modulus p can be determined such that there is a number, γwhere γ ε F_(p) (F_(p) is the field of size p consisting of all integersmod p), and γ³≡1 mod p (a cube root of unity). If for example p=7, thenγ=2, since 2³ mod 7=1. Such a γ does not necessarily exist for all p,and therefore this must be taken into consideration when choosing thevalue of p. Typically, the chosen p should be at least 160 bits inlength for adequate cryptographic strength.

After the curve E has been selected, a mapping function ψ is determined.The mapping function ψ: (x, y)→(γx, y), simply maps one set of points onthe curve to another set of points on the curve. There exists an integerλ such that ψ(Q)=λ·Q for all points Q(x,y) of interest on the ellipticcurve, E. This integer λ may be found by noting that λ³≡1 mod n, where nis the number of points on the elliptic curve E over F_(p) i.e. thenumber of points on E(F_(p)). There may exist more than one solution forλ in λ³≡1 mod n, but only one of those solutions will satisfy themapping function ψ. It is important to note that since γ³ mod p=1, bothQ and ψ(Q) satisfy the equation for E. Therefore, instead of having toperform lengthy calculations to determine the results of multiplicationby λ, it can be done very efficiently using the results of the mappingfunction so that multiplication by λ can be done very efficiently.

A seed point Q is selected and the system parameters E, p, Q, λ, ψ(Q),and γ are stored in the card 12, as indicated at 52, at manufacture timefor use by the cryptographic processor 18. To implement a cryptographicprocedure such as encryption, key agreement or signature it is necessaryto select an integer k for use as an ephemeral private key k andgenerate a corresponding public key kQ.

The value of k may be expressed as:k=(k ₀ +k ₁λ) mod n   (3)where n is the number of points on E(F_(p)) and k₀ and k₁ are integers.The point k·Q then becomes:k·Q=(k ₀ Q+k ₁ λQ) mod n   (4)

For some cryptographic operations the value of k may be chosen at randomand in these cases, rather than select k it is possible to select valuesfor k₀ and k₁ at random, having a length of [log₂(n)]/2 not includingsign bits, (i.e. the length of the k₁'s are chosen to be at least onehalf the length k) and then calculate the value for k using equation(3). Having selected the values of k_(o), k₁ as indicated a 54 in FIG.2, the right side of equation (4) can be calculated quickly using analgorithm analogous to the “Simultaneous Multiple Exponentiation” asdescribed in the “Handbook of Applied Cryptography” (HAC) by Menezes et.al.(Algorithm 14.88) and indicated at 56. For convenience the algorithmis reproduced below. It may be noted that in an additive groupexponentiation is analogous to addition, thus replacing themultiplication in the algorithm with addition, yields the following:Algorithm 1 Simultaneous Multiple Addition INPUT: group elements g₀, g₁,..., g_(l−1) and non negative t-bit integers e₀, e₁, ..., e_(l−1).OUTPUT: g₀e₀ + g₁e₁ + ... + g_(l−1)e_(l−1).  step1. Precomputation. Fori from 0 to (2^(l) − 1):      G_(i)

Σ^(l−1) _(j=0)g_(j)i_(j)    where i = (i_(l−1) ... i₀)₂  step2. A

0  step3. For i from 1 to t do the following:    A

A + A, A

A + G_(I) _(i)  step4. Return (A)    where A = g₀e₀ + g₁e₁ + ... +g_(l−1)e_(l−1)

Applying this algorithm to equation (4) it can be seen that there aretwo group elements, g₀, g₁namely Q and λQ, so that l=2 and two integerse₀, e₁ namely k₀,k₁. The algorithm permits precomputation of some of thevalues and initially G_(i) is precomputed. The results of precomputationof G_(i) with l=2 is shown in table 1. TABLE 1 i 0 1 2 3 G_(i) 0 g₀ g₁g₀ + g₁

After performing a point addition to construct the point: Q+ψ(Q). It ispossible to fill in table 1 with the computed elements to yield table 2.These elements may be pre-computed and stored in memory as shown at step58 in FIG. 2. TABLE 2 i 0 1 2 3 G_(i) 0 Q ψ(Q) Q + ψ(Q)

Before step of the algorithm can be performed, G_(I) ₁ has to bedetermined and accordingly I₁ through I_(t) have to be found asindicated at 60. A notional matrix or combing table may be constructedusing the binary representation of k_(i). If, for example, k₀=30 andk₁=10, then t has the value five since the maximum number of bits in thebinary representation of k₀ through k₁ is five and the notional matrixconstructed from their binary representation is shown in Table 3. I_(i)is determined by the number represented in the i^(th) column where thefirst row contains the least significant bit, the second row containsthe next significant bit, etc. Therefore it can be seen from table 3that I₁=I₂=(11)=3, I₃ =(01)=1, I₄=3, and I₅=0. TABLE 3 i 1 2 3 4 5 k₀ 11 1 1 0 k₁ 0 1 0 1 0 I_(i) 1 3 1 3 0

All the components needed to complete the algorithm are available andthe iteration of step three is performed as shown at 62.

Initially A←O and i is set to 1.

I_(i)=I_(i) which from table 3 is equal to 1. G_(I) ₁ is therefore G₁which from table 2 is Q. The value of A from the iteration for I=1 istherefore O+Q=Q.

For the next iteration where i=2 the initial value of A is Q so A←Q+Q=2QI_(i)=I₂=3 from table 3. G,_(I) ₂ therefore equates to G₃ from table 2which is Q+ψ(Q).

A+G_(I) ₁ therefore is computed as 2Q+Q+ψQ=3Q+ψQ.

The iterations continue for each value of i set out in table 4 untilafter the 5^(th) iteration the value for koq=k, λQ, i.e. kQ is computed.TABLE 4 i A 1 Q 2  3Q + ψ(Q) 3  7Q + 2ψ(Q) 4 15Q + 5ψ(Q) 5 30Q + 10ψ(Q)

Each iteration requires a point doubling (A+A) and a point addition(A+G_(I) ₁ ) although in some cases the value of G_(I) ₁ may be O thatwill reduce the computation.

Thus it may be seen that this method will require a number of pointdoubles equal to max {log₂(k_(i))}, and almost as many point additions.The number of point additions can be reduced using windowing (Alg. 14.85HAC) and exponent recoding techniques. Since the value of i and G_(i)can be precomputed, the point additions are easily performed byretrieving the appropriate precomputed element G_(i) from table 2. OncekP has been computed, it may be used as the correspondents 12 ephemeralpublic key in encrypting or signing transmissions over the channel 16.

To summarize, for cryptographic operations like encryption andDiffie-Hellman, signature, an integer k is required with a correspondingpublic key kQ, computed. The values k₀ and k₁ are chosen at random, eachhaving a length one half the length of n and the term k_(o)Q=k₁λQgenerated using a suitable algorithm. When the k's are chosen in thisway, the method seems to be as secure as the random generation of kitself. Of course it is possible to choose the k_(i)'s to have fewerbits in order to improve efficiency.

In the above technique, the method of writing k=k₀+k₁λ in conjunctionwith simultaneous combing achieves a speed up of the simultaneousmultiple addition algorithm. The technique of writing k=k₀+k₁λ may alsobe used with the scalar multiplication techniques to advantage, namelywith winding, combing ,etc.

For some mappings ψ it is also possible to use more than two sub k's. Itis possible for some ψ's to write k=k₀+k₁λ+k₂λ² allowing the value of kto be computed by applying the simultaneous multiple addition algorithm.

In a second embodiment of the invention a different form of thegeneralized elliptic curve equation (1) is used, namely:y ²=(x ³ −ax) mod p   (5)Once again, p will be a prime number having at least 160 bits. For thistype of curve, the properties required for γ are different. It is nowrequired to find a value such that γ²=−1 mod p. A change in the propertyof γ requires a different mapping function ψ′ to be used. In thisembodiment the mapping takes the form ψ′: (x, y)→(−x, γy). If (x,y) ison the curve, then ψ′(x,y) is also on the curve. In this case λ⁴≡1 mod n(n is still the number of points on E(F_(p))), and therefore λ can becalculated. The mapping ψ′(Q)=λ·Q is performed as before and once againmultiplication by λ can be done very efficiently for this curve. Theequation for k in this embodiment is the same as in the first embodimentand is represented by:k=(k ₀ +k ₁λ) mod n   (6)This equation is the same as in the previous embodiment, having only twogroup elements. Thus using the group elements Q and Q+ψ′(Q) in thealgorithm 1, the point k·Q may be calculated. This computation willrequire a number of point doubles equal to max {log₂(k_(i))}, and asimilar number of point additions. As described earlier the number ofpoint additions can be reduced using windowing and exponent recodingtechniques.

This method applies to other elliptic curves, so long as there exists anefficiently computable endomorphism, ψ.

The above embodiments assume that k can be chosen at random andtherefore k_(o) and k₁ can be selected instead and determine k. Forcryptographic protocols, where it is not possible to choose k, it isfirst necessary to find k₀, k₁ of the desired “short” form from thegiven value of k such that k=(k₀+k₁λ) mod n. In some cases, more thantwo k's can be used to advantage.

As may be seen in the embodiments described above when a point is knownbeforehand, tables can be built to speed multiplication. However, thereare cases when multiples of previously unknown points are required (forexample, this can occur in ECDSA verification) and it is then necessaryto take the value of k as provided and then determine suitablerepresentations for k_(i).

Thus in a third embodiment, system parameters and a value k is provided,the point Q, the required multiple k, and the complex multiplicationmultiple λ are known. It is necessary to determine the “short” k_(i)'sfrom the value for k, which is predetermined. A method for doing thisdescribed as follows and illustrated in the flow chart of FIG. 3. As apre-computation (not requiring k) we compute two relations:a ₀ +b ₀λ≡0 mod na ₁ +b ₁λ≡0 mod nsuch that a_(i) and b_(i) are numbers smaller than n. It is preferablethat a_(i) and b_(i) are as small as possible, however, the presentmethod has advantages even when a_(i) and b_(i) are not minimal. Thepair, a_(i) and b_(i) , where a_(i) and b_(i) are both small, can beviewed as a vector, u_(i) with a small Euclidean length. Typically themethod described below produces k₀ and k₁ having representations onehalf the size of the original k.

In the present embodiment, kQ can be computed efficiently by utilizingprecomputed, short vector representations to obtain an expression of theform:k_(o)Q+λk₁Q

This is accomplished by using precomputed vectors to derive fractionsf_(o) and f₁ that do not require knowledge of k. A vector z is generatedfrom the combination of fractions f_(o) and f₁ and k. The vector z isused to calculate a second vector v′ where v′=(vo′,v₁′) and the value ofkQ calculated asvo^(I)Q+λv₁ ^(I)/Q   (8)The method of achieving this solution is described below in greaterdetail.

To produce small a_(i) and b_(i), it is possible to make use of theL³-lattice basis reduction algorithm (HAC p. 118), which would directlyresult in short basis vectors. However, in this preferred embodiment thesimple extended Euclidean algorithm is employed on the pair (n, λ). Theextended Euclidean algorithm on (n, λ) produces linear combinationsc_(i)n+d_(i)λ=r_(i), where the representation of r_(i) (e.g. bit-length)decreases and the representation of c_(i) and d_(i) increases with i.

The two smallest values of |(d_(i), r_(i))| resulting from using theextended Euclidean algorithm are saved. The size of these vectors aremeasured with the squared Euclidean norm |(d_(i), r_(i))|=d_(i) ²+r_(i)². The terms in these minimal relations are denoted {circumflex over(d)}₀, {circumflex over (r)}₀ and {circumflex over (d)}₁, {circumflexover (r)}₁. And will typically occur in the middle of the algorithm.Even if the minimal relations are not retained, suboptimal relations maystill give the method an advantage in the calculation of pointmultiples.

The values of a_(i) and b_(i) are constructed by defininga₀=−{circumflex over (r)}₀, b₀={circumflex over (d)}₀ anda₁=−{circumflex over (r)}₁, b₁={circumflex over (d)}₀ all of which maybe precomputed. The next task is to find a small representation for themultiple k.

Given the computation of a_(o), b_(o) and a_(i), b_(i) it is possible todesignate the vectors u_(o),ul, where u_(o)=(a₀, b₀) and u₁=(a₁, b₁).These vectors satisfy a_(i)+b_(i)λ=0 (mod n). The multiplication of thegroup elements Q by the vector v=(v₀, v₁) is defined as (v₀+v₁λ)Q. Sincea_(i)+b_(i)λ=0 (mod n), u_(o)R =u₁R=0 for any group element R. Hence forany integers z₀ and z₁, v′ R=(v−z₀u₀−z₁u₁)R for any group element R.

Integers z₀ and z₁ may be chosen such that the vector v′=v−z₀u₀−z₁u₁ hascomponents that are as small as possible. Again, this method will havean advantage if the components of v′ are small, but not necessarilyminimally so.

The appropriate z₀ and z₁ are calculated by converting the basis of vinto the basis {u₀, u₁}. The conversion between basis involves matrixmultiplication. To convert the vector v=(v₀, v₁) from the {u₀, u₁} basisto the standard orthonormal basis {(1,0),(0, 1)},$\nu_{\{{{({1,0})},{({0,1})}}\}} = {{\nu_{({u_{0},u_{1}})}M} = {\left( {\nu_{0},\nu_{1}} \right)\begin{bmatrix}a_{0} & b_{0} \\a_{1} & b_{1}\end{bmatrix}}}$To convert in the other direction, from the standard orthonormal basis{(1, 0),(0, 1)} to the (u₀, u₁) basis, the multiplication is simply bythe inverse of M,$\nu_{({u_{0},u_{1}})} = {{\nu_{\{{{({1,0})},{({0,1})}}\}}\quad{{inverse}(M)}} = {\nu_{\{{{({1,0})},{({0,1})}}\}}{\frac{1}{{a_{0}b_{1}} - {a_{1}b_{0}}}\begin{bmatrix}b_{1} & {- b_{0}} \\{- a_{1}} & a_{0}\end{bmatrix}}}}$

Since the vector v=(k, 0) has a zero component, the bottom row ofinverse(M) is not required, and therefore to convert to the {u₀, u₁}basis only the fractions$f_{0} = \frac{b_{1}}{{a_{0}b_{1}} - {a_{1}b_{0}}}$ and$f_{1} = \frac{b_{0}}{{a_{0}b_{1}} - {a_{1}b_{0}}}$are needed.

The fractions f₀ and f₁ may be precomputed to enough precision so thatthis operation may be effected only with multiplication. It should benoted that the computations leading to these fractions do not dependupon k, therefore they can be computed once when the elliptic curve ischosen as a system parameter, and do not need to be recalculated foreach k. Similarly the vectors v, u_(o) and u₁ may be precomputed andstored.

Once a value of k is selected or determined the value of kQ may becomputed by first calculating z=(z₀, z₁), where z is defined as (z₀,z₁)=(round(kf₀), round(kf₁)). Other vectors near to z will also beuseful, therefore rounding could be replaced with floor or ceilingfunctions or some other approximation.

Once a suitable z has been determined, an efficient equivalent to v(k,0) is calculated by v′=(v₀′, v₁′)=v−z₀u₀ −z₁u₁. The phrase “efficientequivalent” implies a vector v′ such that v′P=vP and v′ has smallcoefficients. The value kQ is then calculated as v₀′Q+v₁′λQ. This valuecan be calculated using simultaneous point addition as described above,with enhanced efficiency obtained from the use of non-adjacent form(NAF) recoding as described above and as described in H.A.C. 14.7 atpage 627. Thus, even where k is predetermined, values of k_(o) and k₁can be computed and used with the mapping function to obtain a value ofkQ and hus he key pair k, kQ.

For the case where k is to be separated into 3 portions k=k₀+k₁λ+k₂λ²,small vectors can be obtained from L³-row-reducing $\begin{bmatrix}1 & 0 & {- \lambda^{2}} \\0 & 1 & {- \lambda} \\0 & 0 & {- n}\end{bmatrix}\quad{{to}\quad\begin{bmatrix}u_{2} \\u_{1} \\u_{0}\end{bmatrix}}$

A small vector equivalent (three-dimensional row) can be obtained in asimilar way to the two-dimensional case.

Using these methods to determine the value of k·Q greatly reduces theprocessing power required by the cryptographic processors 12. It alsoincreases the speed at which these repetitive calculations can be donewhich, in turn, reduces the time to transfer information.

It will be appreciated that once the scalar multiple k has beenrepresented in terms of shortened components k=k₀+k₁λ+k₂λ²+ . . .k_(m-1)λ^(m-1), other options for efficient elliptic curve scalarmultiplication may be used in place of or in conjunction with thesimultaneous multiple addition algorithm. These options includewindowing (fixed and sliding), combing, bit recoding and combinations ofthese techniques.

One particularly beneficial technique permits tables built for onecomponent of the multiplication, say k₀, to be reused for othercomponents k₁ etc. This is accomplished by transforming the computedtable elements by applying the mapping γ as required.

As a further exemplification, an embodiment where k can be recast ask=k₀+k₁λ+k₂λ², where k has m-bits and k_(i) have roughly m/3 bits isdescribed below.

Once the components k_(i) have been determined, they may be recoded fromthe binary representation to the signed binary representation havingless non-zero bits. This recoding can take the Non-Adjacent-Form (NAF),where every 1 or −1 bit in the representation if k_(i) is non-adjacentto another non-zero in the signed binary string. This recoding isdescribed in H.A.C. 14.7 p. 627.

Once each k_(i) has been recoded, a table can be constructed to aid incomputing k_(i)λ^(i)P.

A NAF windowing table precomputes certain short-bit length multiples ofλ^(i)P. The width of the window determines the size of the table. Ask_(i) has been recordedto have no adjacent non zeros, odd window widthsare suitable. A 3-bit wide NAF window would contain1  1  0  1  1  0   − 1

The recoded k_(i) values are built by concatenating these windows, andpadding where necessary with zeros (H.A.C., p. 616).

The required number of additions can be reduced with use of this table,since it is necessary to add or subtract an EC point only for everywindow encountered instead of for every non zero bit.

Initially therefore this technique is applied to the computation ofk_(o)P

The table built for the k₀P calculation can be applied to the k_(i)λPcalculation if the table elements are mapped with the ψ mapping usingthe operator γ. Similarly, k₂λ²P can be accelerated by using the tablebuilt for k₀P, but mapping the table elements with γ².

In applying the sliding window technique to the components, only one setof doublings need be performed.

To illustrate this example of a preferred embodiment the followingexample will be used:If k=[010101011101]₂+[111010101101]₂λ,

then recoding $\begin{matrix}{{k = {\left( {10 - 100 - 10 - 100 - 101} \right\rbrack + {\left\lbrack {1000 - 10 - 10 - 10 - 101} \right\rbrack\lambda}}},} \\{= {k_{0}^{r} + {k_{1}^{r}\lambda}}}\end{matrix}$

A 3-bit window table on P is precomputed containing 1·P, [10−1]·P,[101]·P. This requires two EC additions, and two EC doublings.

After this, kP can be calculated askP=[10−100−10−100−101]P+[1000−10−10−10−101]·λP

by adding/subtracting elements from the table.

This can be done using an accumulator A as follows: A

0 ; initialize A += ψ (1 · P) ; consuming the top bit of k₀ ^(r) A

2A ; double A A

2A A

[10−1] P ; consuming the top 3 bits of k₀ ^(r) A

2⁴A ; A −= [101] ψ P ; consuming a 3 bit window of k₁ ^(r) A

2A ; double A A −= [101] P ; consuming 3 bits of k₁ ^(r) A

2⁴A A −= [101] ψ P ; consuming 3 bits of k₁ ^(r) A

2²A A −= [10−1] P ; consuming the last of k₀ ^(r) A += ψ P ; producingkP.

It will be recognized from the above example that the windows in k₀ andk₁ need not be aligned. This is evidenced by the fact that theaccumulator is doubled between computations of the windows in k₀ and thecomputations of the windows in k₁, indicating a shift of window betweenevaluating k₀P and k₁P.

In summary, the previously described technique is as follows. Given anelliptic curve E and an endomorphism ψ, there corresponds an integer λsuch that λQ=ψ(Q) for all points QεE. Select an integer m and compute anequivalent number m of “short basis vectors” b₁, b₂, . . . , b_(m) . . .. Each such basis vector corresponds to an integer, and each suchinteger is divisible by the number of points n=# E(F_(p) ^(m)) (i.e. thenumber of points). Now, given an integer k, (0<k<n), we writek=Σk_(i)·λ^(i), where the k_(i)'s are chosen to be “short”. This is doneby finding the difference between a certain vector (which represents k)and a nearby vector in the lattice generated by b₁, b₂, . . . , b_(m).

The following embodiment explicitly describes an application of thepreviously described technique (endomorphism and basis conversion and“Shamir's trick”) to elliptic curves defined over composite fields. Inparticular, we describe an application to curves E(F_(p) ^(m)) where pis an odd prime is described. The following embodiments exemplifytechniques for such curves.

This technique is described in the case where the map ψ is the Frobeniusmap ψ(x,y)=(x^(p),y^(p)) and E′_(A,B)(F_(p) ^(m)) where A,BεF_(p).

In this case, it is known that the Frobenius map satisfies theψ²−tψ+p=0, where t=p+1−#E(F_(p) ^(m)).

It follows that λ²−tλ+p=0 mod n and so λ²⁺¹−tλ^(1+i)+pλ^(i)=0 mod n.

Note that the vectors; (λ^(m−1)...    λ², λ¹, λ⁰) b₁ (0, 0, 0, ...   0,1, −t, p) b₂ (       1, −t, p, 0) (1, −t, p, 0, 0, ...   ..., 0) (−t, p,0, 0, ...   ..., 0, 1) b_(m) (p, 0, 0, 0, ...   0,  1, −t)

consist of m “short” basis vectors of the vector space Q^(n). It followsthat to compute k·Q on such a curve we can proceed using the vectorsb₁,b₂ . . . b_(m) and the technique described previously.

In the above embodiments it will be appreciated that k,λQ can beobtained from ψ(kQ) is the mapping is more efficient than addition.

In a further embodiment, the above methods are used to verify a digitalsignature on a message. A sender sends a message m, a signaturecomponent s, and a short term public key R=kP. As indicated above, in atypical digital signature protocol, the signature component s isgenerated using the formula s=ae+k. The value a is a long term privatekey of the sender, and e is a hash of the message m.

Verification requires computing the value sP−eQ which should correspondto R, where Q=aP is a long term public key of the sender. This is thecase since k=s−ae.

Accordingly, Algorithm 1 may be applied to compute a sum g₀e₀+g₁e₁ ofscalar multiples of two group elements g₀ and g₁, where the scalars ares and −e and the group elements are P and Q. A further improvement isobtained by using the NAF as above.

For ease of explanation, the method will be illustrated for computingαP+βQ. In the preferred embodiment of verifying a signature, α=s andβ=−e.

In this case, it may no longer be possible to reuse tables built for onecomponent of the multiplication for other components, unless therelationship between the points P and Q is known to the verifier.Usually, the verifier knows P and Q, but not the scalar a that related Pand Q (i.e. Q=aP). In this case, it is necessary to use a table for eachof P and Q. Then a sliding window method may be used byadding/subtracting elements from the tables.

The following example illustrates this embodiment:

If α=[101101011101]₂ and β=[111010101101]₂,

then k=[101101011101]₂+[111010101101]₂ a,

and recoding α=[10−100−10−100−101]₂ and β=[1000−10−10−10−101]₂,

A 3-bit window table on P and a 3-bit window table on Q are precomputedcontaining 1·P, [10−1]·P, [101]·P and 1·Q,[10−1]·Q, [101]·Qresprectively. This requires two EC additions, and two EC doublings foreach table.

After this, kP can be calculated askP=αP+βQ=[10−100−10−100−101]P+[1000−10−10−10−101]·Q

by adding/subtracting elements from the tables.

This can be done using an accumulator A as follows: A

0 ; initialize A += 1 · Q ; consuming the top bit of β A

2A ; double A A

2A A += [10−1] P ; consuming the top 3 bits of α A

2⁴A ; A −= [101] Q ; consuming a 3 bit window of β A

2A ; double A A −= [101] P ; consuming 3 bits of β A

2⁴A A −= [101] Q ; consuming 3 bits of β A

2²A A −= [10−1] P ; consuming the last of α A += Q ; producing kP.

The signature is accepted as originating from the sender if thecalculated value of kP is equal to the value of R received with thesignature.

Again, it will be appreciated that the windows need not be aligned andthat shifting of the windows produces a double of the accumulator foreach bit shift of the window.

Although the invention has been described with reference to certainspecific embodiments, various modifications thereof will be apparent tothose skilled in the art without departing from the spirit and scope ofthe invention as outlined in the claims appended hereto.

1. A method for multiplying an elliptic curve point Q(x,y) by a scalarto provide a point kQ, the method comprising the steps of: a) selectingan elliptic curve over a finite field F such that there exists anendomorphism ψ where ψ(Q)=λ.Q for all points Q(x,y) on the ellipticcurve, and λ is an integer, b) establishing a representation of saidscalar k as a combination of components k_(i) and said integer λ c)combining said representation and said point Q to form a compositerepresentation of a multiple corresponding to kQ and d) computing avalue corresponding to said point kQ from said composite representationof kQ.
 2. A method according to claim 1 wherein each of said componentsk_(i) is shorter than said scalar k.
 3. A method according to claim 1wherein said components k_(i) are initially selected and subsequentlycombined to provide said scalar k.
 4. A method according to claim 1wherein said representation is of the form$k_{i} = {\sum\limits_{i = 0}^{i =}\quad{k_{i}\lambda^{i}}}$ mod n wheren is the number of points on the elliptic curve.
 5. A method accordingto claim 4 wherein said representation is of the form k_(o)+k₁.
 6. Amethod according to claim 1 wherein said scalar k has a predeterminedvalue and said components k.
 7. A method according to claim 3 whereinsaid value of said multiple kQ is calculated using simultaneous multipleaddition.
 8. A method according to claim 7 wherein grouped terms G_(i)utilized in said simultaneous multiple addition are precomputed.
 9. Amethod according to claim 6 wherein said components k_(i) are obtainedby obtaining short basis vectors (u_(o), u₁) of the field F, designatinga vector v as (k,0), converting v from a standard, orthonomal basis tothe (u_(o),u₁) basis, to obtain fractions f_(o)f₁ representative of thevector v, applying said fractions to k to obtain a vector z, calculatingan efficient equivalent v to the vector v and using components of thevector v in the composite representation of kQ.
 10. A method ofgenerating in an elliptic curve cryptosystem a key pair having a integerk providing a private key and a public key kQ, where Q is a point on thecurve, a) selecting an elliptic curve over a finite field F such thatthere exists an endomorphism ψ where ψ(Q)=λQ for all points Q (x,y) onthe elliptic curve, λ is an integer, b) establishing a representation ofsaid key k as a combination of components k_(i) and said integer λ, c)combining said representation and said point Q to form a compositerepresentation of a multiple corresponding to the public key kQ and d)computing a value corresponding to said key kQ from said compositerepresentation of kQ.
 11. A method according to claim 10 including amethod according to any one of claims 2 to
 9. 12. A method of computinga coordinate of a point kP on an elliptic curve resulting from a pointmultiplication of an initial point P by a scalar k, said methodcomprising the steps of: a) decomposing said scalar k into a pair ofcomponents k₀, k₁ for point multiplication to obtain respective pointson said curve which when combined provide said point kP; b) determininga signed representation in non-adjacent form of each of said first andsecond components; c) generating a table having a plurality of signedbit combinations contained in said representations and correspondingpoint multiples of said combinations to provide portions of saidrespective points; d) establishing for each of said representations awindow having a width less then the length of each of saidrepresentations; e) initiating a sequential examination of saidrepresentations by said windows to obtain a position for one of saidwindows in one of said representations containing a respective one ofsaid combinations in said table; f) retrieving from said table the oneof said point multiples corresponding to said respective one of saidsigned bit combinations in said table to obtain therefrom one of saidportions; g) accumulating said portion and continuing examination ofsaid representations with a doubling of said accumulator for eachbit-wise shift of said windows to obtain a representation of saidcoordinate of said point kP in said accumulator.
 13. A method accordingto claim 12, wherein one of said respective points is derived from saidinitial point P and one of said components using an endomorphism of saidcurve.
 14. A method according to claim 13, wherein said portions of saidone of said respective points are derived from portions of the other ofsaid respective points using said endomorphism.
 15. A method accordingto claim 12, wherein one of said respective points is derived from saidinitial point P, one of said components, and a private key.
 16. A methodaccording to claim 15, wherein said portions of said respective pointsare precomputed and stored in said table.